<?php
/**
* Generuje náhledy pro galerii.
* 16.12.2008 přepsáno, používá cache pro vygenerované obrázky
*/
require_once dirname(__FILE__) . '/../../php/paths.cfg.php';
/**
* @param string file path
* @return string mime type
*/
function getMimeType($file) {
	if (class_exists('finfo')) {
		$finfo = new finfo();
		return $finfo->file($file);
	}
	return mime_content_type($file);
}

/**
* @param string cesta k souboru
* @param string název souboru
*/
function loadImage($path, $get) {
	if (file_exists($path)) {		
		header("content-type: " . getMimeType($path));
		header("Content-Disposition: attachment; filename=" . $get); 
		readfile($path);
		exit;	
	}
}

/*
* ověření co se poslalo, a sestavení adresy k souboru
*/if ((empty($_GET['file'])) || (!empty($_GET['file']) && preg_match("~(\.\./)~", $_GET['file']))) {
	die('file not found');
}
$cacheFile = dirname(__FILE__) . "/thumbnail-cache/" . $_GET['file'];

/**
* je soubor v cache? vydáme ho
*/
loadImage($cacheFile, $_GET['file']);

/**
* Není, vytvoříme ho, uložíme do cache a vydáme
*/
$photoSrc = TEXYLA_IMAGE_FILE_ROOT . '/' . $_GET['file'];


// načtení obrázku
if (!file_exists($photoSrc)){
	die("file not found");
}

// zjistíme typ obrázku
if(!$imageInfo = @getimagesize($photoSrc)) {
	die("File type is not known!");
}
switch($imageInfo['mime']){
	case 'image/png':
		$photo = imagecreatefrompng($photoSrc); 
		$imgFunc = 'imagepng';
		$params = array($cacheFile, 9);
	break;
	case 'image/jpeg': 
		$photo = imagecreatefromjpeg($photoSrc); 
		$imgFunc = 'imagejpeg';
		$params = array($cacheFile, 60);
		
	break;
	case 'image/gif':
		$photo = imagecreatefromgif($photoSrc); 
		$imgFunc = 'imagegif';
		$params = array($cacheFile);
	break;
	default: die("Image type is not known" . $mimeImage);
}


$width = $imageInfo[0];
$height = $imageInfo[1];

if ($width <= 80 && $height <= 80) {
	// malé rozměry obrázku
	$thumbWidth = $width;
	$thumbHeight = $height;
} else if ($width > $height) {
	$thumbWidth = min(80, $width);
	$thumbHeight = round($height * $thumbWidth / $width);
} else {
	$thumbHeight = min(80, $height);
	$thumbWidth = round($width * $thumbHeight / $height);
}

$thumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
$color = ImageColorAllocate($thumb,255, 255, 255);

imagefill($thumb, 0, 0, $color);

imagecopyresampled($thumb, $photo, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imageInfo[0], $imageInfo[1]);

$a = array_merge(array($thumb), $params);
//echo var_dump($a);exit;

# pokus o uložení
call_user_func_array($imgFunc, $a);;

// nastavíme práva čtení a zápisu
@chmod($cacheFile, 0777);

//smažeme obrázek v paměti
imagedestroy($thumb);

// vrátíme požadovaný obrázek
loadImage($cacheFile, $_GET['file']);

